# 构建阶段
FROM node:22-alpine AS builder

WORKDIR /app

# 设置腾讯云镜像源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.cloud.tencent.com/g' /etc/apk/repositories

# 安装构建工具和依赖
RUN apk add --no-cache python3 py3-setuptools make g++ gcc

# 复制依赖相关文件
COPY package*.json ./

# 安装依赖，使用 --build-from-source 选项编译 sqlite3
RUN npm ci --omit=dev --unsafe-perm && \
    npm rebuild sqlite3 --build-from-source

# 生产阶段
FROM node:22-alpine

WORKDIR /app

# 设置腾讯云镜像源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.cloud.tencent.com/g' /etc/apk/repositories

# 从构建阶段复制node_modules
COPY --from=builder /app/node_modules ./node_modules

# 复制应用代码
COPY . .

# 创建数据库目录并设置权限
RUN mkdir -p /app/database && \
    chown -R node:node /app

# 清理npm缓存和临时文件
RUN npm cache clean --force && \
    rm -rf /tmp/* /var/cache/apk/*

EXPOSE 3000

# 使用非root用户运行应用（安全性提升）
USER node

CMD ["node", "src/app.js"]
